import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

# 定义微分方程
def model(y, x):
    return y * np.log(y)

# 初始条件
y0 = 1.5  # 可以根据需要调整初始条件

# x 的范围
x = np.linspace(0.1, 2, 100)  # 避免 x = 0

# 解微分方程
y = odeint(model, y0, x)

# 绘制结果
plt.figure(figsize=(12, 6))

# 原始坐标系中的函数图像
plt.subplot(1, 2, 1)
plt.plot(x, y, label='y(x)')
plt.title('Solution of dy/dx = y * log(y)')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()

# 双对数坐标系中的函数图像
plt.subplot(1, 2, 2)
plt.plot(np.log(x), np.log(y), label='Log-Log Plot of y(x)')
plt.title('Log-Log Plot of dy/dx = y * log(y)')
plt.xlabel('log(x)')
plt.ylabel('log(y)')
plt.legend()

# 显示图像
plt.tight_layout()
plt.show()